{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<center><font size=5>姓名：冉成林   学号：20201120466   专业：电子科学与技术</font></center>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<center><font size=5>邮箱：2033947824@qq.com</font></center>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<center><font size=5>作业 #3</font></center>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div align=center> <img src=\"https://s1.328888.xyz/2022/05/17/DATGe.jpg\" width=\"800\"></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<center><font size=4>日期：2022.5.17</font></center>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 本次作业的目的是采用最小二乘法拟合光谱数据，即从一个测试得到的组合光谱中，拟合各个组分的比例。\n",
    "\n",
    "即：$C(\\lambda) = a A(\\lambda) + bB(\\lambda)$\n",
    "\n",
    "其中：\n",
    "\n",
    "$C(\\lambda)$为组合后的光谱\n",
    "\n",
    "$A(\\lambda)$和$B(\\lambda)$的单个组分的光谱\n",
    "\n",
    "$a$和$b$为$A$和$B$在$C$中的比例。\n",
    "\n",
    "#### 上面的等式可以写成方程组的形式：\n",
    "\n",
    "\n",
    "$$\n",
    "a A(\\lambda_{1}) + bB(\\lambda_{1}) = C(\\lambda_{1}) \\\\\n",
    "a A(\\lambda_{2}) + bB(\\lambda_{2}) = C(\\lambda_{2}) \\\\\n",
    "a A(\\lambda_{3}) + bB(\\lambda_{3}) = C(\\lambda_{3}) \\\\\n",
    "... ... \\\\\n",
    "a A(\\lambda_{i}) + bB(\\lambda_{i}) = C(\\lambda_{i})\\\\\n",
    "... ... \\\\\n",
    "a A(\\lambda_{n}) + bB(\\lambda_{n}) = C(\\lambda_{n})\n",
    "$$\n",
    "\n",
    "#### 上面的方程组可以进一步写成矩阵的形式：\n",
    "\n",
    "$$\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "A(\\lambda_{1}) & B(\\lambda_{1}) \\\\\n",
    "A(\\lambda_{2}) & B(\\lambda_{2}) \\\\\n",
    "A(\\lambda_{3}) & B(\\lambda_{3}) \\\\\n",
    "... & ... \\\\\n",
    "A(\\lambda_{i}) & B(\\lambda_{i}) \\\\\n",
    "... & ... \\\\\n",
    "A(\\lambda_{n}) & B(\\lambda_{n})\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "a \\\\\n",
    "b\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "=\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "C(\\lambda_{1})\\\\\n",
    "C(\\lambda_{2})\\\\\n",
    "C(\\lambda_{3})\\\\\n",
    "...\\\\\n",
    "C(\\lambda_{i})\\\\\n",
    "...\\\\\n",
    "C(\\lambda_{n})\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "#### 该方程可以简化为$Ax=b$的形式，其中:\n",
    "\n",
    "$$\n",
    "A=\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "A(\\lambda_{1}) & B(\\lambda_{1}) \\\\\n",
    "A(\\lambda_{2}) & B(\\lambda_{2}) \\\\\n",
    "A(\\lambda_{3}) & B(\\lambda_{3}) \\\\\n",
    "... & ... \\\\\n",
    "A(\\lambda_{i}) & B(\\lambda_{i}) \\\\\n",
    "... & ... \\\\\n",
    "A(\\lambda_{n}) & B(\\lambda_{n})\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "$$\n",
    "x=\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "a \\\\\n",
    "b\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "$$\n",
    "b=\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "C(\\lambda_{1})\\\\\n",
    "C(\\lambda_{2})\\\\\n",
    "C(\\lambda_{3})\\\\\n",
    "...\\\\\n",
    "C(\\lambda_{i})\\\\\n",
    "...\\\\\n",
    "C(\\lambda_{n})\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "\n",
    "#### 因此，根据最小二乘法，最优的$a$、$b$向量的值应为：\n",
    "$$\\bar{x}=\\frac{A^Tb}{A^TA}$$\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 最小二乘函数定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义fitting函数，传入A和b作为参数，返回值为拟合得到的x向量\n",
    "def fitting(A, b):\n",
    "    # 补全下面的return语句    \n",
    "    return np.linalg.inv(A.T@A)@(A.T@b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义计算矩阵A的函数，传入参数为两个光谱组分对应的数据\n",
    "def calA(spectrumA, spectrumB):\n",
    "    # A的第一列为spectrumA，A的第二列为spectrumB\n",
    "    \n",
    "    # 1.初始化A矩阵，给出n和m的值\n",
    "    n = spectrumA.size\n",
    "    m = 2    \n",
    "    A = np.zeros((n, m))\n",
    "    \n",
    "    # 2.给A矩阵赋值\n",
    "    A[:, 0] = spectrumA\n",
    "    A[:, 1] = spectrumB   \n",
    "    \n",
    "    return A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def calb(C):\n",
    "    return C"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 模拟数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "自然界的很多过程可以用正态分布描述，包括各种材料的发光光谱。正态分布可以用高斯分布函数表示，具有如下形式：\n",
    "$p(x)=\\frac{1}{\\sqrt{2\\pi}\\sigma}e^{-\\frac{(x-\\mu)^2}{2{\\sigma}^2}}$\n",
    "\n",
    "其中：\n",
    "\n",
    "$\\mu$为中心波长，取值在给定的波长范围内建议取450-600之间\n",
    "\n",
    "$\\sigma$为峰的宽度，取值一般在20-50\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入必要的函数库numpy、matplotlib.pyplot\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import math"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.0 定义高斯分布函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(x, mu, sigma):\n",
    "    return 1 / (np.sqrt(2 * math.pi) * sigma) * np.exp(- (x - mu) ** 2 / (2 * (sigma ** 2)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 模拟A光谱"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1370d0adaf0>]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 首先给出波长的范围\n",
    "wavelength  = np.linspace(400, 800, 101)\n",
    "\n",
    "# 定义A光谱的参数\n",
    "mu_A = 460\n",
    "sigma_A = 22\n",
    "\n",
    "spectrumA = f(wavelength, mu_A, sigma_A)\n",
    "\n",
    "# 做图展示A光谱的形状\n",
    "plt.plot(wavelength, spectrumA)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 模拟B光谱"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1370d11fcd0>]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 定义B光谱的参数\n",
    "mu_B = 480\n",
    "sigma_B = 30\n",
    "\n",
    "spectrumB = f(wavelength, mu_B, sigma_B)\n",
    "\n",
    "# 做图展示B光谱的形状\n",
    "plt.plot(wavelength, spectrumB)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3 模拟C光谱"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1370d2843a0>]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# C光谱是A和B的组合，组合系统分别是a和b，且应当引入测试误差\n",
    "\n",
    "def calSpectrumC(a1, a2, A, B, noiseLevel):\n",
    "    return a1 * A + a2 * B + (np.random.rand(A.size) - 0.5) * noiseLevel\n",
    "\n",
    "# 给出模拟C光谱需要的参数\n",
    "a1 = 2\n",
    "a2 = 3\n",
    "noiseLevel =0.01\n",
    "spectrumC = calSpectrumC(a1, a2, spectrumA, spectrumB, noiseLevel)\n",
    "\n",
    "# 做图展示C光谱的形状\n",
    "plt.plot(wavelength, spectrumC)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. 拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算A矩阵\n",
    "# 补全下面的代码\n",
    "\n",
    "A = calA(spectrumA,spectrumB)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算b向量\n",
    "# 补全下面的代码\n",
    "\n",
    "b = calb(spectrumC)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 拟合求解\n",
    "\n",
    "result = fitting(A,b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. 对比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Intensity')"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 分别画出拟合得到的A光谱分量和B光谱分量，以及这两个分量的和，并与C光谱做对比\n",
    "\n",
    "# 新建一个画布\n",
    "plt.figure(figsize = (12, 8))\n",
    "\n",
    "# 画出原始的C\n",
    "plt.scatter(wavelength, spectrumC, c = 'yellow',edgecolors = 'blue',marker = '*',s = 150)\n",
    "\n",
    "# 画出A分量\n",
    "plt.plot(wavelength, result[0] * spectrumA, 'b-')\n",
    "\n",
    "# 画出B分量\n",
    "plt.plot(wavelength, result[1] * spectrumB, 'g-')\n",
    "\n",
    "# 画出A分量+B分量\n",
    "plt.plot(wavelength, result[0] * spectrumA + result[1] * spectrumB, 'r-')\n",
    "\n",
    "# 定义x轴和y轴的名称\n",
    "plt.xlabel(\"Wavelength (nm)\")\n",
    "plt.ylabel(\"Intensity\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. 分享心得"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###    1.本次作业的光谱拟合是前面线性最小二乘拟合的一个延申，其巧妙之处在于过滤了数据点的x坐标，使其一系列y坐标成为一空间向量，从而使其能够容易做出最少二乘的拟合形式。\n",
    "###    2.正因为过滤了一个坐标参数，所以实则还是y坐标之间的线性组合，也就是最小二乘法的线性拟合。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
